home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / ibus-table / engine / tabdict.py < prev    next >
Text File  |  2009-07-30  |  5KB  |  133 lines

  1. # -*- coding: utf-8 -*-
  2. # vim: set et sts=4 sw=4
  3. #
  4. # ibus-table - The Tables engine for IBus
  5. #
  6. # Copyright (c) 2008-2009 Yu Yuwei <acevery@gmail.com>
  7. #
  8. # This library is free software; you can redistribute it and/or
  9. # modify it under the terms of the GNU Lesser General Public
  10. # License as published by the Free Software Foundation; either
  11. # version 2.1 of the License, or (at your option) any later version.
  12. #
  13. # This library is distributed in the hope that it will be useful,
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16. # Lesser General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU Lesser General Public
  19. # License along with this library; if not, write to the Free Software
  20. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  21. #
  22. # $Id: $
  23. #
  24. import sys
  25. reload (sys)
  26. sys.setdefaultencoding('utf-8')
  27.  
  28. tab_dict = {
  29.     '0':0,
  30.     'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 
  31.     'f':6, 'g':7, 'h':8, 'i':9, 'j':10,
  32.     'k':11, 'l':12, 'm':13, 'n':14, 'o':15,
  33.     'p':16, 'q':17, 'r':18, 's':19, 't':20,
  34.     'u':21, 'v':22, 'w':23, 'x':24, 'y':25,
  35.     'z':26, "'":27, ';':28, '`':29, '~':30, 
  36.     '!':31, '@':32, '#':33, '$':34, '%':35,
  37.     '^':36, '&':37, '*':38, '(':39, ')':40,
  38.     '-':41, '_':42, '=':43, '+':44, '[':45,
  39.     ']':46, '{':47, '}':48, '|':49, '/':50,
  40.     ':':51, '"':52,  '<':53, '>':54, ',':55,
  41.     '.':56, '?':57, '\\':58, 'A':59, 'B':60,
  42.     'C':61, 'D':62, 'E':63, 'F':64, 'G':65,
  43.     'H':66, 'I':67, 'J':68, 'K':69, 'L':70,
  44.     'M':71, 'N':72, 'O':73, 'P':74, 'Q':75,
  45.     'R':76, 'S':77, 'T':78, 'U':79, 'V':80,
  46.     'W':81, 'X':82, 'Y':83, 'Z':84, '0':85,
  47.     '1':86, '2':87, '3':88, '4':89, '5':90,
  48.     '6':91, '7':92, '8':93, '9':94
  49.     }
  50.  
  51. tab_key_list = tab_dict.keys()
  52.  
  53. id_tab_dict = {}
  54. for key,id in tab_dict.items():
  55.     id_tab_dict[id] = key
  56.  
  57. class tab_key(object):
  58.     '''The class store'''
  59.     def __init__(self, xm_key):
  60.         self._key = xm_key
  61.         try:
  62.             self._key_id = tab_dict[xm_key]
  63.         except KeyError, e:
  64.             # give a false value
  65.             self._key_id = -1
  66.             error_m = u'%s is not in tab_dict' % xm_key
  67.             print error_m.encode('utf8')
  68.             import traceback
  69.             traceback.print_exc ()
  70.     
  71.     def get_key_id(self):
  72.         return self._key_id
  73.  
  74.     def get_key(self):
  75.         return self._key
  76.  
  77.     def __str__(self):
  78.         return self._key
  79.  
  80.     def __int__(self):
  81.         return self._key_id
  82.  
  83. def parse ( inputstr ):
  84.     
  85.     ids_input = []
  86.     try:
  87.         ids_input = map (tab_key,inputstr)
  88.     except:
  89.         pass
  90.     return ids_input[:]
  91.  
  92. def deparse (id):
  93.     '''deparse the id code of tables, id could be int or int in string form'''
  94.     if id:
  95.         id = int(id)
  96.         if id in id_tab_dict:
  97.             return id_tab_dict[id]
  98.     else:
  99.         return ''
  100.  
  101. chinese_nc_chars="“”‘’《》〈〉〔〕「」『』【】〖〗()[]{}"\
  102.     "∩╝ÄπÇé∩╝îπÇü∩╝¢∩╝Ü∩╝ƒ∩╝üΓǪΓÇö┬╖╦ë╦ç┬¿πÇà∩╜₧ΓÇûΓê╢∩╝é∩╝ç∩╜Ç∩╜£"\
  103.     "ΓÆêΓÆëΓÆèΓÆïΓÆîΓÆìΓÆÄΓÆÅΓÆÉΓÆæΓÆÆΓÆôΓÆöΓÆòΓÆûΓÆùΓÆÿΓÆÖΓÆÜΓÆ¢"\
  104.     "╨É╨æ╨Æ╨ô╨ö╨ò╨û╨ù╨ÿ╨Ö╨Ü╨¢╨£╨¥╨₧╨ƒ╨á╨í╨ó╨ú╨ñ╨Ñ╨ª╨º╨¿╨⌐╨¬╨½╨¼╨¡╨«╨»╨ü"\
  105.     "ΓàáΓàíΓàóΓàúΓàñΓàÑΓàªΓàºΓà¿Γà⌐Γà¬Γà½"\
  106.     "ΓÆêΓÆëΓÆèΓÆïΓÆîΓÆìΓÆÄΓÆÅΓÆÉΓÆæΓÆÆΓÆôΓÆöΓÆòΓÆûΓÆùΓÆÿΓÆÖΓÆÜΓÆ¢"\
  107.     "πÄÄπÄÅπÄ£πÄ¥πÄ₧πÄíπÅäπÅÄπÅæπÅÆπÅò"\
  108.     "╬æ╬Æ╬ô╬ö╬ò╬û╬ù╬ÿ╬Ö╬Ü╬¢╬£╬¥╬₧╬ƒ╬á╬í╬ú╬ñ╬Ñ╬ª╬º╬¿╬⌐"\
  109.     "Γæ┤Γæ╡Γæ╢Γæ╖Γæ╕Γæ╣Γæ║Γæ╗Γæ╝Γæ╜Γæ╛Γæ┐ΓÆÇΓÆüΓÆéΓÆâΓÆäΓÆàΓÆåΓÆç"\
  110.     "ε¥¼Γé¼∩╝ä∩┐á∩┐í∩┐Ñ"\
  111.     "┬ñΓåÆΓåæΓåÉΓåôΓåûΓåùΓåÿΓåÖ"\
  112.     "πéíπéóπéúπéñπéÑπéªπéºπé¿πé⌐πé¬πé½πé¼πé¡πé«πé»πé░πé▒πé▓πé│πé┤πé╡πé╢πé╖πé╕"\
  113.     "πé╣πé║πé╗πé╝πé╜πé╛πé┐πâÇπâüπâéπââπâäπâàπâåπâçπâêπâëπâèπâïπâîπâìπâÄπâÅπâÉπâæ"\
  114.     "πâÆπâôπâöπâòπâûπâùπâÿπâÖπâÜπâ¢πâ£πâ¥πâ₧πâƒπâáπâíπâóπâúπâñπâÑπâªπâºπâ¿πâ⌐"\
  115.     "πâ¬πâ½πâ¼πâ¡πâ«πâ»πâ░πâ▒πâ▓πâ│πâ┤πâ╡πâ╢πâ╝πâ╜πâ╛"\
  116.     "πüüπüéπüâπüäπüàπüåπüçπüêπüëπüèπüïπüîπüìπüÄπü▒πüÅπüÉπüæπüÆπüôπüöπüòπüûπüùπüÿ"\
  117.     "πüÖπüÜπü¢πü£πü¥πü₧πüƒπüáπüíπüóπüúπüñπüÑπüªπüºπü¿πü⌐πü¬πü½πü¼πü¡πü«πü»πü░"\
  118.     "πü▓πü│πü┤πü╡πü╢πü╖πü╕πü╣πü║πü╗πü╝πü╜πü╛πü┐πéÇπéüπééπéâπéäπéàπéåπéçπéêπéëπéè"\
  119.     "πéïπéîπéìπéÄπéÅπéÉπéæπéÆπéôπé¢πé£πé¥πé₧"\
  120.     "σï╣τü¼σå½Φë╣σ▒«Φ╛╢σêéσîÜΘÿ¥σ╗╛Σ╕¿ΦÖìσ╜Éσì⌐ΘÆàσåéσåûσ«ÇτûÆΦéÇΣ╕┐µö╡σç╡τè¡"\
  121.     "Σ║╗σ╜íΘÑúτñ╗µëîµ░╡τ║ƒΣ║áσ¢ùσ┐äΦ«áΦíñσ╗┤σ░óσñéΣ╕╢"\
  122.     "─ü├í╟Ä├á┼ì├│╟Æ├▓├¬─ô├⌐─¢├¿─½├¡╟É├¼╟û╟ÿ╟Ü╟£├╝┼½├║╟ö├╣"\
  123.     "∩╝ï∩╝ì∩╝£∩╝¥∩╝₧┬▒├ù├╖ΓêêΓêÅΓêæΓêòΓêÜΓê¥Γê₧ΓêƒΓêáΓêúΓêÑΓêºΓê¿Γê⌐Γê¬Γê½Γê«"\
  124.     "Γê┤Γê╡Γê╢Γê╖Γê╜ΓëêΓëîΓëÆΓëáΓëíΓëñΓëÑΓëªΓëºΓë«Γë»ΓèòΓèÖΓèÑΓè┐Γäâ┬░ΓÇ░"\
  125.     "ΓÖéΓÖÇ┬ºΓäûΓÿåΓÿàΓùïΓùÅΓùÄΓùçΓùåΓûíΓûáΓû│Γû▓ΓÇ╗πÇô∩╝â∩╝å∩╝á∩╝╝∩╝╛∩╝┐∩┐ú"\
  126.     "╨░╨▒╨▓╨│╨┤╨╡╨╢╨╖╨╕╨╣╨║╨╗╨╝╨╜╨╛╨┐╤Ç╤ü╤é╤â╤ä╤à╤å╤ç╤ê╤ë╤è╤ï╤î╤ì╤Ä╤Å╤æ"\
  127.     "Γà░Γà▒Γà▓Γà│Γà┤Γà╡Γà╢Γà╖Γà╕Γà╣╬▓╬│╬┤╬╡╬╢╬╖╬▒╬╣╬║╬╗╬╝╬╜╬╛╬┐╧Ç╧ü╧â╧ä╧à╧å╬╕╧ê╧ë"\
  128.     "ΓæáΓæíΓæóΓæúΓæñΓæÑΓæªΓæºΓæ¿Γæ⌐ΓæáΓæíΓæóΓæúΓæñΓæÑΓæªΓæºΓæ¿Γæ⌐"\
  129.     "πêáπêíπêóπêúπêñπêÑπêªπêºπê¿πê⌐πêáπêíπêóπêúπêñπêÑπêªπêºπê¿πê⌐"\
  130.     "πäàπäåπäçπäêπäëπäèπäïπäîπäìπäÄπäÅπäÉπäæπäÆπäôπäöπäòπäûπäùπäÿπäÖπäºπä¿πä⌐"\
  131.     "πäÜπä¢πä£πä¥πä₧πäƒπäáπäíπäóπäúπäñπäÑπäª"
  132. chinese_nocheck_chars = chinese_nc_chars.decode('utf8')
  133.